package net.edu_soft.ec.asset.mapper;

import java.util.List;

import net.edu_soft.ec.asset.pojo.Product;
import net.edu_soft.ec.asset.pojo.ProductExample;
import net.edu_soft.ec.asset.pojo.ResultType;
import net.edu_soft.ec.asset.pojo.bo.ProductBO;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

@Repository
public interface ProductMapper {
    long countByExample(ProductExample example);

    int deleteByExample(ProductExample example);

    int deleteByPrimaryKey(Integer productId);

    int insert(Product record);

    int insertSelective(Product record);

    List<Product> selectByExample(ProductExample example);

    Product selectByPrimaryKey(Integer productId);

    int updateByExampleSelective(@Param("record") Product record, @Param("example") ProductExample example);

    int updateByExample(@Param("record") Product record, @Param("example") ProductExample example);

    int updateByPrimaryKeySelective(Product record);

    int updateByPrimaryKey(Product record);

    /***
     * 批量查询产品
     * @param list 产品id
     * @return
     */
    List<ProductBO> selectProductByIdList(List<Integer> list);

    /***
     * 查询所有产品id和产品类型
     * @return
     */
    List<ResultType> selAllType();

    /***
     * 查询所有产品信息，根据创建时间或者修改时间排序
     * @param factoryName 厂家名称，可为空，为空则查询全部，不为空则查询该厂家的所有产品
     * @return 产品信息
     */
    List<ProductBO> selProByDate(@Param("factoryName")String factoryName);

    /***
     * 查询所有产品信息，根据使用次数排序
     * @param factoryName 厂家名称，可为空，为空则查询全部，不为空则查询该厂家的所有产品
     * @return 产品信息
     */
    List<ProductBO> selProByUse(@Param("factoryName")String factoryName);
}